// 编写一个用来做vant组件注册的插件

// 1. vue2中如何定义一个插件？
// 给vue扩展全局功能 - 全局组件注册 、全局指令注册 、原型挂载属性
// 只要构造函数Vue能力范围所及都可以当成插件来用

// 1. 定义插件 [对象定义法 + 函数定义法]
import {
  Button, NavBar, CellGroup, Cell,
  Image, Dialog, Popup, Form, Field, Tabs, Tabbar,
  TabbarItem, Tab, PullRefresh, List, Divider, Tag,
  Search, Lazyload
} from 'vant'

const components = [
  Button, NavBar, CellGroup, Cell,
  Image, Dialog, Popup, Form, Field, Tabs, Tabbar,
  TabbarItem, Tab, PullRefresh, List, Divider, Tag,
  Search, Lazyload
]

const vantPlugin = {
  install (Vue) {
    // 编写插件的相关逻辑
    console.log('插件被注册了', Vue)
    console.dir(Vue)
    // 注册全局可用
    components.forEach(component => Vue.use(component))
  }
}

export default vantPlugin

// 2. 注册（使用）插件

// Vue.use(vantPlugin) 必须在new Vue之前
// 重要机制: 当我们执行Vue.use(vantPlugin)相当于自动执行了插件内部的install方法同时把Vue构造函数
// 当成一个实参传入
